<?php
class Data_Model_Porosidad {
    public function exportarPdf($data = NULL) {
        $modelo = new Api_Model_Porosidad();
        
        $porosidades = array();

        $archivo = '';

        if (is_array($data) || NULL === $data) {
            $porosidades = $modelo->getPorosidades($data, PDO::FETCH_ASSOC);
        } else {
            $porosidades[] = $modelo->getPorosidad($data, PDO::FETCH_ASSOC);
        }

        try {
            $view = new Zend_View();
            $view->addScriptPath(realpath(APPLICATION_PATH . '/../public/templates'));
            $view->assign('porosidades', $porosidades);
            $contenido = $view->render('imprimirPorosidades.phtml');
            $archivo = DATA_PATH . '\Porosidades ' . date('Y') . '.pdf';

            $pdf = new PDF_HTML2PDF('P', 'A4', 'es');
            $pdf->WriteHTML($contenido);
            $pdf->Output($archivo, 'F');

            return $archivo;
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

    public function exportarExcel($data=NULL) {
        // Obtener porosidades
        $modelo = new Api_Model_Porosidad();

        // Arreglo de datos
        $porosidades = array(
            array(
                'Id',
                'Fecha',
                'Turno',
                'Identificacion',
                'A',
                'B',
                'C',
                'W',
                'W\'',
                'X',
                'GEA',
                'GEV',
                'Porosidad'
            )
        );

        // Llenar las porosidades
        $tmp = $modelo->getPorosidades($data, PDO::FETCH_ASSOC);

        // Rellenar las porosidades
        for ($i = 0, $len = count($tmp); $i < $len; $i++) {
            $porosidades[] = $tmp[$i];
        }

        // No de registros a tomar del excel
        $noValores = count($tmp);

        // Establecer nombre del excel
        $nombreArchivo = '';

        try {
            // Exportar a Excel
            $excel = new PHPExcel();
            $worksheet = $excel->getActiveSheet();
            $worksheet->fromArray($porosidades);
            $worksheet->setTitle('Porosidades');

            // Eliminar y crear un archivo nuevo
            $nombreArchivo = DATA_PATH . '\Porosidades ' . date('Y') . '.xlsx';
            if (file_exists($nombreArchivo)) {
                unlink($nombreArchivo);
            }

            // Crear gráfico
            $worksheetGrafico = $excel->createSheet();
            $worksheetGrafico->setTitle('Grafica');
            
            // Leyenda del eje de la X
            // Fecha
            $ejeX = array(
                new PHPExcel_Chart_DataSeriesValues('Number', 'Porosidades!$B$2:$B$' . ($noValores + 1), NULL, $noValores)
            );
            
            // Valores de la Y
            // Porosidades
            $ejeYLeyendas = array(
                new PHPExcel_Chart_DataSeriesValues('String', 'Porosidades!$M$1', NULL, 1)
            );
            $ejeYValores = array(
                new PHPExcel_Chart_DataSeriesValues('Number', 'Porosidades!$M$2:$M$' . ($noValores + 1), NULL, $noValores)
            );

            // datos de la gráfica.
            $series = new PHPExcel_Chart_DataSeries(
                PHPExcel_Chart_DataSeries::TYPE_LINECHART,
                PHPExcel_Chart_DataSeries::GROUPING_STACKED,
                range(0, intval($noValores - 1)),
                $ejeYLeyendas,
                $ejeX,
                $ejeYValores
            );

            // dirección de la gráfica
            $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR);

            // establecer el area de dibujo
            $areaGrafica = new PHPExcel_Chart_PlotArea(NULL, array($series));

            // establecer la leyenda de la gráfica.
            $leyendaGrafica = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false);

            // titulo grafica		
            $tituloDeGrafica = new PHPExcel_Chart_Title('% Porosidad');
            $leyendaEjeY = new PHPExcel_Chart_Title('Fechas');

            // Crear grafica
            $grafica = new PHPExcel_Chart(
                'Grafica',
                $tituloDeGrafica,
                $leyendaGrafica,
                $areaGrafica,
                true,
                0,
                NULL,
                $leyendaEjeY
            );

            // Crear la grafica
            $grafica->setTopLeftPosition('A1');

            // Establecer el máximo del tamaño de la gráfica
            $noValores = ($noValores < 15) ? 15 : $noValores;

            // Mover la gráfica
            $grafica->setBottomRightPosition('AA' . $noValores);

            //	Agregar chart
            $worksheetGrafico->addChart($grafica);

            // Save Excel 2007 file
            $file = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
            $file->setIncludeCharts(TRUE);
            $file->save($nombreArchivo);

            // Destruir excel
            $excel->disconnectWorksheets();
            unset($excel);
            
            return $nombreArchivo;
        } catch(Exception $e) {
            return FALSE;
        }
    }
}
